package com.example.validate.controller;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;

import javax.validation.constraints.NotBlank;
import java.util.List;
@Controller
/**
 * 对参数进行校验，需要把@Validated注解写在类上
 * 一旦不合法，该方法直接抛出异常(javax.validation.ConstraintViolationException)，而不会进入方法
 * 所以  @ModelAttribute("keyWords")注解、BindingResult result 参数没有实际意义
 * 加了BindingResult result 参数反而会报非法参数异常
 * 应该使用全局异常处理器
 * @Validated 在这里修饰非实体对象则没有意义
 */
@Validated
public class ParameterValidateController {

    @GetMapping("/validateParameter")
    public String validateParameter( @NotBlank(message = "关键字不能为空") String keyWords) {
        System.out.println("keyWords = " + keyWords);

        return "redirect:/success";
    }

}
